// 同源策略

// 协议相同
// 域名相同
// 端口相同

// 举例来说，http://www.example.com/dir/page.html 这个网址，协议是 http://，域名是 www.example.com，端口是 80（默认端口可以省略）。它的同源情况如下。

// http://www.example.com/dir2/other.html：同源
// http://example.com/dir/other.html：不同源（域名不同）
// http://v2.www.example.com/dir/other.html：不同源（域名不同）
// http://www.example.com:81/dir/other.html：不同源（端口不同）

// 1.2 目的 主要是防止 csrf 攻击

// 1.3 限制范围 随着互联网的发展，"同源政策"越来越严格。目前如果非同源，共有三种行为受到限制。

// Cookie、LocalStorage 和 IndexDB 无法读取。
// DOM 无法获得。
// AJAX 请求不能发送。


// 跨域资源共享 CORS
// CORS是一个W3C标准，全称是"跨域资源共享"（Cross-origin resource sharing）。
//  它允许浏览器向跨源服务器，发出XMLHttpRequest请求，从而克服了AJAX只能同源使用的限制。
// CORS需要浏览器和服务器同时支持。
// 整个CORS通信过程，都是浏览器自动完成，不需要用户参与。
// 对于开发者来说，CORS通信与同源的AJAX通信没有差别，代码完全一样。浏览器一旦发现AJAX请求跨源，就会自动添加一些附加的头信息，
// 有时还会多出一次附加的请求，但用户不会有感觉。

//  因此，实现CORS通信的关键是服务器。只要服务器实现了CORS接口，就可以跨源通信。


// 构建服务器
const express = require('express');
const bodyParser = require('body-parser');//解析,用req.body获取post参数
// 导入跨域的包
const cors = require('cors')
// 跨域中间件
const app = new express()
// 设置允许跨域访问该服务,中间件
// app.all('*', function (request, response, next) {
// 	response.header('Access-Control-Allow-Origin', '*')
// 	response.header('Access-Control-Allow-Methods', 'PUT,GET,POST,DELETE,OPTIONS')
// 	response.header('Access-Control-Allow-Headers', 'X-Requestd-With')
// 	response.header('Access-Control-Allow-Headers', 'Content-Type')
// 	next()
// })
// 第三方中间件,可以跨域
app.use(cors())
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(__dirname + '/static'))


app.get('/query', (request, response) => {
    console.log(request.query);
    console.log(request.headers);
    // 无法返回数字
    response.send(request.query)
})

app.post('/query', (request, response) => {
    console.log(request.headers);
    console.log(request.body);
    response.send("你传来的数据是")
})
app.listen(90, () => {
    console.log('http://localhost:4000 started. Location: ')
})